<html>
	<head>
		<script language="JavaScript" type="text/javascript">
			// Dojo configuration
			djConfig = { 
				parseWidgets: false,
				isDebug: true
			};
		</script>
		<script language="JavaScript" type="text/javascript" 
			src="../../dojo.js"></script>
		<script language="JavaScript" type="text/javascript">
			dojo.require("dojo.event.topic");

			sub1 = null;
			sub2 = null;
			function Subscriber(displayNode, subId, doUnsubscribe){
				this.subId = subId;
				this.doUnsubscribe = doUnsubscribe;
				this.displayNode = displayNode;
	
				this.update = function(message) {
						this.displayNode.innerHTML = this.subId + ": " + message;
						if(this.doUnsubscribe){
							dojo.event.topic.unsubscribe("testTopic1", this, "update");
							this.displayNode.innerHTML += "<br>" + this.subId + " has unsubscribed";
						}
				};
			}

			var clickCount = 0;

			function sendMessage1() {
				dojo.event.topic.publish("testTopic1", "Message " + (++clickCount));
			}

			dojo.addOnLoad(function(){
				sub1 = new Subscriber(document.getElementById("subscriber1"), "subscriber1", true);
				sub2 = new Subscriber(document.getElementById("subscriber2"), "subscriber2", false);

				dojo.event.topic.subscribe("testTopic1", sub1, "update");
				dojo.event.topic.subscribe("testTopic1", sub2, "update");
			});
		</script>
	</head>
	<body>
		<h1>Unsubscribe during a topic message notification</h2>
		<p>This test sees if it is possible for a subscriber to unsubscribe from a topic during notification
		of a topic message. Unsubscribing should not affect other subscribers from receiving the topic
		message.</p>
		
		<p>After pressing the button, the output should be:<br>
		<i>subscriber1: Message 1<br>
		subscriber1 has unsubscribed<br>
		subscriber2: Message 1<br></i>
		</p>

		<div style="font-weight: bold">Test</div>
		<div id="subscriber1" style="border: 1px solid black">
			subscriber1:
		</div>

		<div id="subscriber2" style="border: 1px solid black">
			subscriber2:
		</div>

		<button id="publisher" onclick="sendMessage1();">
			Publish a message on Topic1
		</button>
    </body>
</html>
